<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>

  <script>
    /*
      数组常用方法 - every 和 some

      every
        + 判断数组内是不是所有项都满足条件
        + 如果所有项都满足条件, 那么返回值是 true
        + 只要有任意一项不满足条件, 那么返回值是 false

      some
        + 判断数组内是不是有某一项满足条件
        + 只要数组内任意一项满足条件, 那么返回值就是 true
        + 只有所有项都不满足条件的时候, 返回值才是 false
    */

    // // 1. 准备方法
    // Array.prototype.myEvery = function (cb) {
    //   // 1-1. 提前假设一个变量, 假设所有都满足条件
    //   var flag = true

    //   // 1-2. 循环遍历数组来验证我的假设
    //   for (var i = 0; i < this.length; i++) {
    //     var r = cb(this[i], i, this)

    //     // 如果在循环过程中, r 为 false 了, 说明当前这一个不是满足条件的项
    //     // 推翻我的假设
    //     if (!r) {
    //      flag = false
    //      break
    //     }
    //
    //   }


    //   // 1-3. 返回我的 flag
    //   return flag
    // }

    // // 2. 将来使用的时候
    // var arr = [ 10, 20, 30, 40, 50 ]
    // var res = arr.myEvery(function (item, index, arr) {
    //   console.log(item)
    //   return item > 10
    // })
    // console.log(res)



    // 1. 准备方法
    Array.prototype.mySome = function (cb) {
      // 1-1. 提前假设一个变量, 假设完全没有
      var flag = false

      // 1-2. 循环遍历数组来验证我的假设
      for (var i = 0; i < this.length; i++) {
        var r = cb(this[i], i, this)

        if (r) {
          flag = true
          break
        }
      }

      // 1-3. 返回我的 flag
      return flag
    }

    // 2. 将来使用的时候
    var arr = [ 10, 20, 30, 40, 50 ]
    var res = arr.some(function (item, index, arr) {
      console.log(item)
      return item > 10
    })
    console.log(res)

  </script>
</body>
</html>
